package JavaEE.io;
import java.util.*;
import java.io.*;

/**
 * 目标:扫描指定目录,并找到名称中"符合要求"的普通文件(不包含目录)
 * 并后续询问用户"是否要删除该文件"
**/
public class Test1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 1. 用户输入要查询的文件名
        System.out.println("请输入要查询的目录:");
        String dir = in.next();
        System.out.println("请输入要查询的文件名:");
        String filename = in.next();
        // 2. 判定目录是否存在
        // 通过对应的目录名,找到对应的文件,并且判断是否为目录
        File rootFile = new File(dir);
        // isDirectory判断是否为目录
        if(!rootFile.isDirectory()){
            System.out.println("目录不存在!!!");
            return;
        }
        // 3. 进行搜索,查找目录中的所有文件和子文件
        searchDir(rootFile,filename);
    }
    public static void searchDir(File rootFile,String filename){
        // 1. 将"目录" -> "文件数组". 以列出 rootFile 中的内容
        File[] files = rootFile.listFiles();
        // 如果为空目录,则return
        if(files == null){
            return;
        }
        // 2. 遍历 files 数组,判定每个元素的类型
        for(File file:files){
            if(file.isDirectory()){
                // 是一个目录,递归调用 searchDir 方法
                searchDir(file,filename);
            } else if(file.isFile()){
                // 是一个普通文件,判定文件名是否匹配
                if(file.getName().contains(filename)){
                    // 删除这个文件
                    tryDelete(file);
                }
            }
        }
    }
    public static void tryDelete(File file){
        Scanner in = new Scanner(System.in);
        // 显示出这个文件的绝对路径
        System.out.println("准备删除文件: " + file.getAbsolutePath());
        System.out.println("是否确认删除? (Y/N)");
        String choice = in.next();
        if (choice.equals("Y")){
            file.delete();
            System.out.println("删除成功!");
        }else {
            System.out.println("取消删除!");
        }
    }
}















